#ifndef _ADT_Hilmans_General_H
#define _ADT_Hilmans_General_H
//------------------------------------------------------------------------
// _HilPack_General
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define _HilPack_General_Nil 0

int _HilPack_General_LongStr(char *InputS);
// return Panjang string InputS, "_HilPack_" akan return 9

int _HilPack_General_ExistChar(char *InputS, char C);
// return Apakah ada karakter pertama C di string InputS, return (posisikarakter+1) jika ya, 0 klo nggak
// misalkan mencari'L' dari "FORMULA", returnnya adalah 6  <--(5+1)

int _HilPack_General_AddChr(char InputS[], char InputC);
// menambahkan karakter InputC ke belakang string InputS, "hahaha" + 'X'

int _HilPack_General_AddChrF(char InputS[], char InputC);
// menambahkan karakter InputC ke depan string InputS, 'X' + "hahaha", maksud akhiran F pada fungsi adalah First

int _HilPack_General_DelChr(char InputS[]);
// menghapus karakter paling belakang string, "abcdef" --> "abcde", return 0 jika string sudah kosong

int _HilPack_General_DelChrF(char InputS[]);
// menghapus karakter paling depan string, "abcdef" --> "bcdef", return 0 jika string sudah kosong

int _HilPack_General_AddStr(char S1[], char S2[]);
// mengubah string S1 dengan cara menambah S2 di belakang S1 sehingga S1=S1+S2,  misalkan S1="abc",S2="xyz", maka S1 nanti "abcxyz"

int _HilPack_General_CopyStr(char Output[], char Input[]);
// menghapus Output dulu, lalu menggandakan string Input ke string Output

int _HilPack_General_ParseStr(char *StrIdx, char *InputS);
// ini nggak general, dipakenya pas ADT _HilPack_Excel

int _HilPack_General_ParseTwo(char *One, char *Two, char *InputS);
// bila input string adalah "abcg,sdef", maka One="abcg", Two="sdef"  tanda koma adalah pemisah

int _HilPack_General_ParseThree(char *One, char *Two, char* Three, char *InputS);
// bila input string adalah "abcg,sdef,babL", maka One="abcg", Two="sdef", Three="babL"   tanda koma adalah pemisah

int _HilPack_General_ParseColon(char *One, char *Two, char *InputS);
// bila input string adalah "abcg:sdef", maka One="abcg", Two="sdef"   tanda titik 2 adalah pemisah

int _HilPack_General_IsCell(char Input[]);
// jika string INput berupa Cell, return 1, return 0 jika tidak. Contohnya "A5" akan return 1, "rf23" akan return 0

int _HilPack_General_IsNum(char InputC);
// dipakenya pas di ADT _HilPack_Excel

int _HilPack_General_ParseCell(int *OutKol, int *OutBar, char *InputS);
// mengubah tipe Cell menjadi kolom dan baris, misalkan InputS adalah "D17", maka OutKol=4, OutBar=17

int _HilPack_General_ParseArea(int *Kol1, int *Bar1, int *Kol2, int *Bar2, char *InputS);
// mengubah tipe area menjadi Kolom dan Baris, misalkan InputS adalah ""

int _HilPack_General_AddStrF(char S1[], char S2[]);
// mengubah string S1 dengan cara menambah S2 di depan S1, sehingga S1=S1+S2,  misalkan S1="abc",S2="xyz", maka S1 nanti "xyzabc"

int _HilPack_General_IsArea(char *InputS);
// mengecek apakah InputS adalah area. Jika InputS adalah "A5:H24" return 1, jika "E23:Hahaha" return 0

int _HilPack_General_GetStr(char *OutputS ,char *InputS, int Start, int Stop);
// misalkan Start=2, Stop=5, maka OutputS=InputS[2]..InputS[5], contoh InputS="abcdefgh", maka OutputS="cdef"

int _HilPack_General_SameStr(char *S1, char *S2);
// mengecek apakah sedua string input sama

int _HilPack_General_ExistSub(char *OutputS,char *InputS);
// mengecek apakah InputS merupakan SubString dari OutputS. Contoh OutputS="hilman's package", jika InputS="pack" maka return 1
// jika InputS="test" maka return 0

int _HilPack_General_ExistSubLast(char *OutputS,char *InputS);
// mengecek apakah InputS merupakan SubString dari OutputS. Contoh OutputS="hilman's package", jika InputS="pack" maka return 1
// jika InputS="test" maka return 0

int _HilPack_General_IsChar(char InputC);
// dipake pas _HilPack_Excel

int _HilPack_General_IsCell_2(char *InputS);
// versi lama dari _HilPack_General_IsCell

int _HilPack_General_IsString (char *InputS);
// dipake pas _HilPack_Excel

int _HilPack_General_DelStrNum(char *OutputS, int Num);
// menghapus sejumlah string di belakang OutputS, misalkan Num=3, OutputS="testings", maka OutputS="testi" , hilang 3 karakter di belakang

int _HilPack_General_DelStrNumF(char *OutputS, int Num);
// menghapus sejumlah string di depan OutputS, misalkan Num=3, OutputS="testings", maka OutputS="tings" , hilang 3 karakter di depan

int _HilPack_General_GetStrLastCodeStr(char *OutputS, char *InputS, char *Pattern);
// mengambil string di belakang dengan penanda berhenti adalah Pattern

#endif
